package com.ybkj.o2o.mc.manager;


import com.ybkj.o2o.mc.common.DataGrid;
import com.ybkj.o2o.mc.entity.PassengerGrade;

import java.util.List;

/**
 * Created by shine on 15/8/19.
 */
public interface PassengerGradeManager {
  
  /**
   * 分页查询乘客级别信息.
   */
  DataGrid<PassengerGrade> findAll(int page, int rows);

  /**
   * 保存乘客级别信息.
   * 
   * @param passengerGrade 乘客等级
   * @return 乘客等级
   */
  PassengerGrade insert(PassengerGrade passengerGrade);

  /**
   * 根据等级名称与系统key查询等级是否存在.
   *
   * @param name   等级名称
   * @param appKey 系统key
   * @return true存在，false不存在
   */
  boolean exists(String name, String appKey);
  
  Long countByNameAndAppKey(String name, Long companyId, String appKey);

  /**
   * 根据主键与系统key查询乘客级别信息.
   *
   * @param gradeId 主键
   * @param appKey  系统key
   * @return 等级信息
   */
  PassengerGrade fetch(Long gradeId, Long companyId, String appKey);

  /**
   * 根据主键与系统key更新乘客级别信息.
   *
   * @param passengerGrade 等级信息
   * @return 等级信息
   */
  PassengerGrade updateByPrimaryKey(PassengerGrade passengerGrade);

  /**
   * 根据主键与系统key删除等级信息.
   *
   * @param gradeId 等级主键
   * @param appKey  系统key
   * @return 受影响行数
   */
  int deleteGrade(Long gradeId, String appKey);

  /**
   * 根据appKey查询所有等级.
   *
   * @param appKey 系统key
   * @return 等级列表
   */
  List<PassengerGrade> findByAppKey(String appKey);

  /**
   * 根据系统key查询默认等级.
   *
   * @param appKey 系统key
   * @return 等级信息
   */
  PassengerGrade findDefault(Long companyId,String appKey);

  /**
   * 根据公司id和appKey查询默认等级 .
   * @param companyId   公司id
   * @param appKey  区分系统
   * @return PassengerGrade
   */
  PassengerGrade findDefaultByCompanyId(Long companyId, String appKey);

  /**
   * 修改指定公司的默认等级 .
   * @param defaultGrade       默认等级
   * @param id      等级id
   * @param companyId 公司id
   * @param appKey  区分系统
   * @return int
   */
  int updateDefaultGrade(boolean defaultGrade, Long id, Long companyId, String appKey);
  
  /**
   * 根据等级名称和公司id查询等级 .
   * @param name   等级名称
   * @param companyId   公司id
   * @param appKey  区分系统
   * @return PassengerGrade
   */
  PassengerGrade findByNameAndCompanyId(String name, Long companyId, String appKey);
  
  /**
   * 根据公司id查询客户等级 .
   * @param companyId   公司id
   * @param appKey      区分系统
   */
  List<PassengerGrade> findByCompany(Long companyId, String appKey);

  int updateCompanyName(Long companyId,String abbreviation, String appKey);

  PassengerGrade findByIdAndAppKey(Long gradeId, String appKey);
}
